package br.ufpb.di.ppgi.persistencia.iquery;

import java.util.List;

import br.ufpb.di.ppgi.negocio.modelo.usuario.Usuario;
import br.ufpb.di.ppgi.negocio.modelo.usuario.UsuarioRole;
import br.ufpb.di.ppgi.negocio.servicos.login.Credencial;
import br.ufpb.di.ppgi.persistencia.pagination.HibernateQueryPagedList;

public interface IUsuarioQuery extends IQuery {

	public abstract Usuario findByEmail(String email);
	
	public abstract Usuario findByCPF(String cpf);

	public abstract Usuario findByCredential(Credencial credential);

	public abstract Integer count();

	public abstract Integer countSuperUser();

	public abstract boolean hasUsuarioByLogin(String email);

	public abstract Usuario get(Long id);

	public abstract List<Usuario> listAll();

	public abstract List<Usuario> listByRoles(List<UsuarioRole> roles);
	
	public abstract Integer qtdePendencias(Usuario colegiado);
	
	public abstract Integer qtdPropostasPendentes(Usuario colegiado);
	
	public abstract Integer qtdDefesasPendentes(Usuario colegiado);

	public abstract Usuario fetchCoordenador();

	public abstract void resetarSenha(Usuario usuario);

	public abstract HibernateQueryPagedList<Usuario> paginarByKey(String key);

	public abstract boolean cpfExists(String cpf);	

}